;; 设置字体为微软雅黑
;; (set-default-font "Consolas-10:antialias=subpixel")
;; (set-fontset-font "fontset-default"
;;          'gb18030 '("Monaco" . "unicode-ttf"))
;; (set-fontset-font "fontset-default"
;;          'unicode '("WenQuanYi Zen Hei" . "unicode-ttf"))

;; 设置用户名和邮箱
(setq user-full-name "Wu Jian")
(setq user-mail-address "wujian@miaozhen.com")

;; Add the original Emacs Lisp Package Archive
(require 'package)
(add-to-list 'package-archives
	     '("elpa" . "http://tromey.com/elpa/"))
;; Add the user-contributed repository
(add-to-list 'package-archives
	     '("marmalade" . "http://marmalade-repo.org/packages/"))
(package-initialize)

;; 外观设置
;; 加载主题
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")
;; (load-theme 'erikc)
;; 去掉工具栏
(tool-bar-mode 0)
;; 去掉菜单栏，F10绑定为显示菜单栏，万一什么东西忘了
(menu-bar-mode 0)
;; 不要滚动栏，现在都用滚轴鼠标了，可以不用滚动栏了
(scroll-bar-mode 0)


;; 修改中文文本的行距,1个象素
(setq-default line-spacing 1)


;; 备份设置
;; emacs还有一个自动保存功能，默认在~/.emacs.d/auto-save-list里，这个非常有用，我
;; 这里没有改动，具体可以参见Sams teach yourself emacs in 24hours(我简称为sams24)
;; 启用版本控制，即可以备份多次
(setq version-control t)
;; 备份最原始的版本两次，记第一次编辑前的文档，和第二次编辑前的文档
(setq kept-old-versions 2)
;; 备份最新的版本五次，理解同上
(setq kept-new-versions 5)
;;删掉不属于以上12中版本的版本
(setq delete-old-versions t)
;;设置备份文件的路径
(setq backup-directory-alist '(("." . "~/.emacs.d/backups")))
;;备份设置方法，直接拷贝
(setq backup-by-copying t)
(setq make-backup-file t)


;; 时间显示设置
;; 启用时间显示设置，在minibuffer上面的那个杠上
(display-time-mode 1)
;; 时间使用24小时制
(setq display-time-24hr-format t)
;; 时间显示包括日期和具体时间
(setq display-time-day-and-date t)
;; 时间栏旁边启用邮件设置
(setq display-time-use-mail-icon t)
;; 时间的变化频率
(setq display-time-interval 10)
;; 显示时间的格式
(setq display-time-format "%m月%d日%A%H:%M")


;; 将默认模式从fundemental-mode改为text-mode
(setq default-major-mode 'text-mode)
;; 在minibuffer里启用自动补全函数和变量
(icomplete-mode 1)
;; 允许自动打开图片，如wiki里面
(auto-image-file-mode t)
;; 可以操作压缩文档
(auto-compression-mode 1)
;; 显示行号和列号
(global-linum-mode t)
(setq column-number-mode t)
;; 使用滚轴鼠标
(mouse-wheel-mode t)
;; 设定删除保存记录为200，可以方便以后无限恢复
(setq kill-ring-max 200)
;; 增大使用查找函数和变量的寻找范围
(setq apropos-do-all t)
;; 使用aspell程序作为Emacs的拼写检查程序
;; 没有aspell的字典，还是用ispell吧
;; (setq-default ispell-program-name "ispell")
;; 改变emacs标题栏的标题,显示buffer的名字
(setq frame-title-format "%b")
;; 配置unique buffer names
(require 'uniquify)
(setq uniquify-buffer-name-style 'post-forward-angle-brackets)
;; 允许 Emacs 和外部其他程序的粘贴
(setq x-select-enable-clipboard t)
;; 启动Emacs Server,然后用 emacsclient 起动 Emacs
;; 加快 Emacs 的起动速度
;; (server-start)
;; 显示匹配的括号
(show-paren-mode 't)
(setq show-paren-style 'expression)
;; 高亮當前行
;; (global-highline-mode 1)
;; 把缺省禁用的功能打开。
(put 'set-goal-column 'disabled nil)
(put 'dired-find-alternate-file 'disabled nil)

;; 自动重载更改的文件
(global-auto-revert-mode 1)
;; 当鼠标移动的时候自动转换frame，window或者 mini-buffer
(setq mouse-autoselect-window t)
;; 设置书签更改时自动保存
(setq bookmark-save-flag 1)

;; 开启winner mode，可以用C-c '<-'来恢复上一个窗口布局
(when (fboundp 'winner-mode)
  (winner-mode)
  (windmove-default-keybindings))

(defun my-add-subdirs-to-load-path (dir)
  (let ((default-directory (concat dir "/")))
    (setq load-path (cons dir load-path))
    (normal-top-level-add-subdirs-to-load-path)))

;; use apsell as ispell backend
(setq-default ispell-program-name "aspell")
;; use American English as ispell default dictionary
(ispell-change-dictionary "american" t)

;; 设置tramp默认连接方式
(defun tramp-setting ()
  (if (eq window-system 'w32)
      (progn
	(setq tramp-default-user "supertool")
	(setq tramp-default-method "plink")
	(setq tramp-auto-save-dirctory "~/tmp"))
    (progn
      (setq tramp-default-method "ssh")
      (setq tramp-default-user "supertool")
      (setq tramp-auto-save-dirctory "/tmp"))))

(tramp-setting)

;; 关闭不需要的远程vc
(setq vc-ignore-dir-regexp
      (format "\\(%s\\)\\|\\(%s\\)"
	      vc-ignore-dir-regexp
	      tramp-file-name-regexp))

;; 设置模板文件路径
(setq template-home-directory "~/.emacs.d/Templates")

;; 设置LC_COLLATE为Asiic码
(setenv "LC_COLLATE" "C")

;; 設置字體
(create-fontset-from-fontset-spec
 "-*-Consolas-normal-r-*-*-15-*-*-*-c-*-fontset-jerry,
      latin-iso8859-2:-*-Consolas-normal-r-*-*-15-*-*-*-c-*-iso8859-2,
      latin-iso8859-3:-*-Consolas-normal-r-*-*-15-*-*-*-c-*-iso8859-3,
      latin-iso8859-4:-*-Consolas-normal-r-*-*-15-*-*-*-c-*-iso8859-4,
      cyrillic-iso8859-5:-*-Consolas-normal-r-*-*-15-*-*-*-c-*-iso8859-5,
      greek-iso8859-7:-*-Consolas-normal-r-*-*-15-*-*-*-c-*-iso8859-7,
      latin-iso8859-9:-*-Consolas-normal-r-*-*-15-*-*-*-c-*-iso8859-9,
      chinese-gb2312:-Microsoft-微软雅黑-normal-r-*-*-14-*-*-*-c-*-gb2312-*,
      chinese-gbk:-Microsoft-微软雅黑-normal-r-*-*-14-*-*-*-c-*-gbk-*,
      chinese-big5-1:-Microsoft-微软雅黑-normal-r-*-*-14-*-*-*-c-*-big5-*,
      chinese-big5-2:-Microsoft-微软雅黑-normal-r-*-*-14-*-*-*-c-*-big5-*" t)

(defun jerry-frame-font()
  (interactive)
  (set-frame-font "fontset-jerry")
  (set-fontset-font "fontset-default"
		    'unicode '("Microsoft YaHei" . "unicode-ttf"))
  )
;; 設置主題
(add-to-list 'load-path "~/.emacs.d/themes/")
(require 'color-theme)
(require 'color-theme-jerry)
(require 'color-theme-term)

(defun jerry-frame-theme()
  (interactive)
  (if (eq window-system 'nil)
      (progn
	(color-theme-term))
    (progn
      (color-theme-jerry))))

(defun jerry-frame-setting ()
  (interactive)
  (jerry-frame-theme)
  (jerry-frame-font)
  )

;; 判斷是否為daemon模式啓動加載字體
;; 來自 http://emacser.com/daemon.htm
(if (and (fboundp 'daemonp) (daemonp))
    (progn
      (add-hook 'before-make-frame-hook
		(lambda ()
		  ;; (disable-theme 'erikc)
		  ;; (disable-theme 'term)
		  ;; (setq custom-enabled-themes nil)))
		  (color-theme-jerry)))
      (add-hook 'after-make-frame-functions
		(lambda (frame)
		  (with-selected-frame frame
		    (jerry-frame-setting)))))
  (jerry-frame-setting))

;; 配置dired
(add-hook 'dired-load-hook
	  (lambda ()
	    ;; Bind dired-x-find-file.
	    (setq dired-x-hands-off-my-keys nil)
	    (load "dired-x")
	    ))
(add-hook 'dired-mode-hook
	  (lambda ()
	    ;; Don't set 'dot' files
	    (setq dired-omit-files
		  (concat dired-omit-files "\\|^\\..+$"))
	    (dired-omit-mode 1)
	    ))
(autoload 'dired-jump "dired-x"
  "Jump to Dired buffer corresponding to current buffer." t)

(autoload 'dired-jump-other-window "dired-x"
  "Like \\[dired-jump] (dired-jump) but in other window." t)

(define-key global-map "\C-x\C-j" 'dired-jump)
(define-key global-map "\C-x4\C-j" 'dired-jump-other-window)

(provide 'jerry-basic)
